package ru.reaperoq.inventory.navigation

import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountCircle
import androidx.compose.material.icons.filled.Home
import androidx.compose.material.icons.filled.LocationCity
import androidx.compose.material.icons.filled.SupervisorAccount
import androidx.compose.material.icons.filled.ViewCompact
import androidx.compose.material.icons.outlined.AccountCircle
import androidx.compose.material.icons.outlined.Home
import androidx.compose.material.icons.outlined.LocationCity
import androidx.compose.material.icons.outlined.SupervisorAccount
import androidx.compose.material.icons.outlined.ViewCompact
import androidx.compose.ui.graphics.vector.ImageVector

sealed class Screens(
    val route: String,
    val label: String? = null,
    val iconDefault: ImageVector? = null,
    val iconSelected: ImageVector? = null,
) {
    data object AuthFlow : Screens("authFlow")
    data object Login : Screens("login")
    data object Register : Screens("register")

    data object MainFlow : Screens("mainFlow")
    data object Tabs : Screens("tabs")

    data object VerificationEdit : Screens(
        "verificationEdit"
    )

    data object MyInventory : Screens(
        "myInventory",
        "Моё",
        Icons.Outlined.Home,
        Icons.Default.Home
    )

    data object MyInventoryScanner : Screens(
        "myInventoryScanner"
    )

    data object AllProfiles : Screens(
        "allProfiles",
        "Люди",
        Icons.Outlined.SupervisorAccount,
        Icons.Default.SupervisorAccount
    )

    data object AllLocations : Screens(
        "allLocations",
        "Локации",
        Icons.Outlined.LocationCity,
        Icons.Default.LocationCity
    )

    data object AllInventories : Screens(
        "allInventories",
        "Объекты",
        Icons.Outlined.ViewCompact,
        Icons.Default.ViewCompact
    )

    data object AllInventoriesList : Screens(
        "allInventoriesList"
    )

    data object AllInventoriesEdit : Screens(
        "allInventoriesEdit"
    )

    data object Profile : Screens(
        "profile",
        "Профиль",
        Icons.Outlined.AccountCircle,
        Icons.Default.AccountCircle
    )
}